package files;

import java.io.File;
import java.io.IOException;
import java.io.RandomAccessFile;
import java.util.ArrayList;
import java.util.Collection;


import maquina.LocalProperties;
import monitor.Componente;

public class ComponentsListFileManager extends GridMonitorFileManager {

	public static void removeComponentsFromList(int tipoComponente, int portaComunicacao){
		try {
			RandomAccessFile raf = new RandomAccessFile(new File(LocalProperties.filenameComponentsList), "rw");
			
			//Pega a quantidade de registros salvos no arquivo...
			int contador = 0;
			while(raf.readLine() != null){
				contador++;
			}
			
			//volta para o início do arquivo
			raf.seek(0);
			
			Collection<String> lista = new ArrayList<String>();
			
			//Procura entre os registros, se existe o componente informado, os registros que não interessam são salvos em outra lista...
			int i = 0;
			while(i < contador){
				String linha = raf.readLine();
				if(!linha.equals(tipoComponente+LocalProperties.separador+portaComunicacao)){
					lista.add(linha);
				}
				i++;
			}
			
			
			//Clear all component's list
			clearInformation(LocalProperties.filenameComponentsList);
			
			//Adiciona à lista os componentes já conhecidos...
			for (String component : lista) {
				String atualComponent[] = component.split(LocalProperties.separador);
				Componente componente = new Componente();
				componente.setPortaComunicacao(Integer.parseInt(atualComponent[1]));
				componente.setTipoMonitorado(Integer.parseInt(atualComponent[0]));
				
				saveInformation(LocalProperties.filenameComponentsList, componente.getTipoMonitorado()+LocalProperties.separador+componente.getPortaComunicacao());
			}
			
		} catch (IOException e) {
			e.printStackTrace();
		}
	}
	
}
